package com.jf.cloud.service.sysmanager.dao.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jf.cloud.service.sysmanager.common.base.BaseService;
import com.jf.cloud.service.sysmanager.common.db.BaseDao;
import com.jf.cloud.service.sysmanager.common.db.Query;
import com.jf.cloud.service.sysmanager.common.util.DateUtil;
import com.jf.cloud.service.sysmanager.dao.ISysStaffService;
import com.jf.cloud.service.sysmanager.entity.SysStaff;

/**
 * <p>
 * 后台用户 服务实现类
 * </p>
 *
 * @author LangK
 * @since 2017-12-04
 */
@Service
public class SysStaffServiceImpl extends BaseService<SysStaff, Long> implements ISysStaffService {

	@Resource
	private BaseDao baseDao;
	
	/**
	 * 修改员工  基本资料
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午8:22:23
	 */
	@Transactional
	public void updateStaff(SysStaff staff) {
		  String updateSql = " update sys_staff a  set a.NICK_NAME=?,a.QQ=?,a.PHONE=?,a.UPDATE_TIME=?,"
		  		+ "a.STAFF_ACCOUNT_CODE=?,a.STAFF_NAME=?,a.STAFF_TYPE=? where ROW_ID=? ";
		  update(updateSql, staff.getNickName(),staff.getQq(),staff.getPhone(),DateUtil.getCurrentDateTime(),
				  staff.getStaffAccountCode(),staff.getStaffName(),staff.getStaffType(),staff.getRowId());
	}
	
	/**
	 * 启用/停用员工
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午8:22:14
	 */
	@Transactional
	public void stopStaff(SysStaff staff,SysStaff opt) {
		 int useFlag = staff.getUseFlag().equals("1")?0:1;
		 String updateSql = " update sys_staff a  set a.USE_FLAG=?,a.OPT_STAFF_ID=?,a.OPT_STAFF_ACCOUNT=?,a.UPDATE_TIME=? where ROW_ID=? ";
		 this.baseDao.update(updateSql, useFlag,opt.getRowId(),opt.getStaffAccount()
				 ,DateUtil.getCurrentDateTime(),staff.getRowId());
	}
	
	/**
	 * 删除用户
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午8:22:02
	 */
	@Transactional
	public void deleteStaff(SysStaff opt,Long id) {
		 String updateSql = " delete from  sys_staff  where ROW_ID = ? and USE_FLAG = 0 ";
		 this.baseDao.update(updateSql, id);
	}

	/**
     * 检查是否重复
     * 
     * @author 朱建文 创建时间：2017年12月5日 下午8:21:52
     */
	public SysStaff checkIsRepeat(String staffAccount) {
		Query query = new Query();
		query.put("STAFF_ACCOUNT", staffAccount);
		query.put("DEL_FLAG", 0);
		return find(query); 
	}
	
	/**
     * 重置登录密码
     * 
     * @author 朱建文 创建时间：2017年12月5日 下午8:21:38
     */
	public void resetPwd(SysStaff staff) {
		 String updateSql = " update sys_staff a  set a.STAFF_PWD=? where ROW_ID=? ";
		 update(updateSql, staff.getStaffPwd(),staff.getRowId());
	}
	
	/**
	 * 修改用户密码
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午8:21:27
	 */
	@Transactional
	public void updatePass(SysStaff staff, String password) {
		String sql = "UPDATE sys_staff SET STAFF_PWD = ? WHERE ROW_ID = ? AND STAFF_PWD = ?";
		this.baseDao.update(sql, password,staff.getRowId(),staff.getStaffPwd());
	}

	/**
	 * 修改用户最后登录时间
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午4:21:20
	 */
	@Override
	public void updateLastLoginTime(Long rowId) {
		String sql = "UPDATE sys_staff SET LAST_LOGIN_TIME = ? WHERE ROW_ID = ? ";
		this.baseDao.update(sql, DateUtil.getCurrentDateTime(), rowId);
	}

	/**
	 * 员工帐号/手机号码查重
	 * 
	 * @author 朱建文 创建时间：2017年12月5日 下午8:21:09
	 */
	@Override
	public SysStaff findObject(String staffAccount, String phone, Integer rowId)throws Exception {
		SysStaff staff = null;
		if (staffAccount == null) {
			Query query = new Query();
			query.put("PHONE", phone);
			query.put("ROW_ID", rowId != null ? rowId:0).notEqual();
			staff = this.find(query);
		}
		if (phone == null) {
			Query query = new Query();
			query.put("STAFF_ACCOUNT", staffAccount);
			query.put("ROW_ID", rowId != null ? rowId:0).notEqual();
			staff = this.find(query);
		}
		return staff;
	}
}
